package global

import (
	"net/http"
	"time"

	"gitee.com/war2001/NiuMaEasyGo/config"
	"gitee.com/war2001/NiuMaEasyGo/nm_core/router"
	"gitee.com/war2001/NiuMaEasyGo/nm_core/storage"
	"github.com/go-redis/redis/v8"
	wcache "github.com/silenceper/wechat/v2/cache"
	"go.uber.org/zap"
	"gorm.io/gorm"
)

var (
	Config               *config.AppConfig          // 全局配置
	DB                   *gorm.DB                   // 全局数据库连接
	Redis                *redis.Client              // 全局Redis客户端
	WechatCache          wcache.Cache               // 全局微信缓存
	Services             interface{}                // 全局服务
	Utils                interface{}                // 全局工具
	WebSocketManager     interface{}                // 全局WebSocket管理器
	Scheduler            interface{}                // 全局调度器
	DistributedScheduler interface{}                // 全局分布式调度器
	MessageQueue         interface{}                // 全局消息队列
	Logger               *zap.Logger                // 全局日志记录器
	HttpClient           *http.Client               // 全局HTTP客户端
	StorageManager       *storage.Manager           // 全局存储管理器
	ControllerRegistry   *router.ControllerRegistry // 全局控制器注册表
)

func init() {
	// 初始化HTTP客户端
	HttpClient = &http.Client{
		Timeout: 30 * time.Second,
		Transport: &http.Transport{
			MaxIdleConns:        100,
			MaxIdleConnsPerHost: 100,
			IdleConnTimeout:     90 * time.Second,
		},
	}
}
